home *** CD-ROM | disk | FTP | other *** search
- //--------------------------------------------------------------------------
- //
- // Copyright (c) 2002, Colin Granville
- //
- // All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or
- // without modification, are permitted provided that the following
- // conditions are met:
- //
- // * Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- //
- // * Redistributions in binary form must reproduce the above
- // copyright notice, this list of conditions and the following
- // disclaimer in the documentation and/or other materials
- // provided with the distribution.
- //
- // * The name Colin Granville may not be used to endorse or promote
- // products derived from this software without specific prior
- // written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- // OF THE POSSIBILITY OF SUCH DAMAGE.
- //
- //--------------------------------------------------------------------------
-
- #include "GuiTask.h"
- #include "ERROR.h"
- #include "GuiRegister.h"
- #include "swis.h"
- #include "GuiWimp.h"
-
- const char* init_resource_directory;
- int init_wimp_version;
- int* init_wimp_messages;
- int* init_toolbox_events;
-
- //**********************************************************************
-
- void guiTaskInitialise(const char* resource_dir,int wimp_version,
- int *wimp_mess,int *tbox_events)
- {
- init_resource_directory=resource_dir;
- init_wimp_version=wimp_version;
- init_toolbox_events=tbox_events;
- init_wimp_messages=wimp_mess;
- guiTask();
- }
-
-
- //**********************************************************************
-
- GuiTask& guiTask()
- {
- static GuiTask t;
- return t;
- }
-
- //**********************************************************************
-
- GuiTask::GuiTask()
- {
- static int wimp_messages;
- static int toolbox_events;
- if (init_resource_directory==0) ERROR("Toolbox not Initialised");
- ERROR(_swix(Toolbox_Initialise,_INR(0,6) | _OUTR(0,2),0,init_wimp_version,
- ((init_wimp_messages == GUI_TASK_ALL_MESSAGES)?&wimp_messages:init_wimp_messages),
- ((init_toolbox_events == GUI_TASK_ALL_MESSAGES)?&toolbox_events:init_toolbox_events),
- (char *)init_resource_directory,&m_messages,
- &m_id_block, &m_wimp_version, &m_handle,(void**)&m_sprite_area));
-
- GuiRegister::initialise(m_id_block);
-
- m_resource_directory=init_resource_directory;
-
- _kernel_swi_regs reg;
- reg.r[0]=0;
- reg.r[1]=0;
- ERROR(_kernel_swi(Toolbox_GetSysInfo,®,®));
- m_name.resize(reg.r[2]-1);
- if (m_name.size()==reg.r[2]-1)
- {
- reg.r[0]=0;
- reg.r[1]=(int)m_name.data();
- ERROR(_kernel_swi(Toolbox_GetSysInfo,®,®));
- }
- }
-
- //**********************************************************************
-
- void GuiTask::raiseEvent(GuiObject& ob,GuiToolboxEvent& event,GuiComponentId cid)
- {
- _swix(Toolbox_RaiseToolboxEvent,_INR(0,3),0,ob.id(),cid,&event);
- }
-
- //**********************************************************************
-
- const char* GuiTask::lookup(const char* token, const char* p0,const char* p1,
- const char* p2,const char* p3)
- {
- static char buf[512];
- if (_swix(MessageTrans_Lookup,_INR(0,7),
- &m_messages,token,buf,sizeof(buf),p0,p1,p2,p3)==0) return buf;
- return "";
- }
-